{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "利用Logistic回归技术实现糖尿病发病预测-陈龙"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.639947</td>\n",
       "      <td>0.866045</td>\n",
       "      <td>-0.031990</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>0.166619</td>\n",
       "      <td>0.468492</td>\n",
       "      <td>1.425995</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.205066</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.852200</td>\n",
       "      <td>-0.365061</td>\n",
       "      <td>-0.190672</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.233880</td>\n",
       "      <td>2.016662</td>\n",
       "      <td>-0.693761</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-1.332500</td>\n",
       "      <td>0.604397</td>\n",
       "      <td>-0.105584</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.073567</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.695245</td>\n",
       "      <td>-0.540642</td>\n",
       "      <td>-0.633881</td>\n",
       "      <td>-0.920763</td>\n",
       "      <td>-1.041549</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.141852</td>\n",
       "      <td>0.504422</td>\n",
       "      <td>-2.679076</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>0.316566</td>\n",
       "      <td>1.549303</td>\n",
       "      <td>5.484909</td>\n",
       "      <td>-0.020496</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "0   0.639947                      0.866045       -0.031990   \n",
       "1  -0.844885                     -1.205066       -0.528319   \n",
       "2   1.233880                      2.016662       -0.693761   \n",
       "3  -0.844885                     -1.073567       -0.528319   \n",
       "4  -1.141852                      0.504422       -2.679076   \n",
       "\n",
       "   Triceps_skin_fold_thickness  serum_insulin       BMI  \\\n",
       "0                     0.670643      -0.181541  0.166619   \n",
       "1                    -0.012301      -0.181541 -0.852200   \n",
       "2                    -0.012301      -0.181541 -1.332500   \n",
       "3                    -0.695245      -0.540642 -0.633881   \n",
       "4                     0.670643       0.316566  1.549303   \n",
       "\n",
       "   Diabetes_pedigree_function       Age  Target  \n",
       "0                    0.468492  1.425995       1  \n",
       "1                   -0.365061 -0.190672       0  \n",
       "2                    0.604397 -0.105584       1  \n",
       "3                   -0.920763 -1.041549       0  \n",
       "4                    5.484909 -0.020496       1  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train=pd.read_csv('FE_pima-indians-diabetes.csv')\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "pregnants                       768 non-null float64\n",
      "Plasma_glucose_concentration    768 non-null float64\n",
      "blood_pressure                  768 non-null float64\n",
      "Triceps_skin_fold_thickness     768 non-null float64\n",
      "serum_insulin                   768 non-null float64\n",
      "BMI                             768 non-null float64\n",
      "Diabetes_pedigree_function      768 non-null float64\n",
      "Age                             768 non-null float64\n",
      "Target                          768 non-null int64\n",
      "dtypes: float64(8), int64(1)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train=train['Target']\n",
    "#drop函数默认删除行，列需要加axis = 1\n",
    "X_train=train.drop(['Target'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  (0, 0)\t0.6399472601593604\n",
      "  (0, 1)\t0.866044750345085\n",
      "  (0, 2)\t-0.031989933625034286\n",
      "  (0, 3)\t0.6706425316724778\n",
      "  (0, 4)\t-0.1815412428554134\n",
      "  (0, 5)\t0.16661938051662545\n",
      "  (0, 6)\t0.4684919773786535\n",
      "  (0, 7)\t1.425995404422845\n",
      "  (1, 0)\t-0.8448850534430228\n",
      "  (1, 1)\t-1.2050658269926269\n",
      "  (1, 2)\t-0.5283186007770815\n",
      "  (1, 3)\t-0.012301288426257741\n",
      "  (1, 4)\t-0.1815412428554134\n",
      "  (1, 5)\t-0.8521997614958584\n",
      "  (1, 6)\t-0.3650607775715993\n",
      "  (1, 7)\t-0.19067190513648613\n",
      "  (2, 0)\t1.2338801856003137\n",
      "  (2, 1)\t2.016661737754925\n",
      "  (2, 2)\t-0.6937614898277639\n",
      "  (2, 3)\t-0.012301288426257741\n",
      "  (2, 4)\t-0.1815412428554134\n",
      "  (2, 5)\t-1.3325002141588866\n",
      "  (2, 6)\t0.6043973178596731\n",
      "  (2, 7)\t-0.1055841520017845\n",
      "  (3, 0)\t-0.8448850534430228\n",
      "  :\t:\n",
      "  (764, 7)\t-0.5310229176752926\n",
      "  (765, 0)\t0.34298079743888377\n",
      "  (765, 1)\t-0.0215740685139345\n",
      "  (765, 2)\t-0.031989933625034286\n",
      "  (765, 3)\t-0.6952451085249933\n",
      "  (765, 4)\t-0.3321317852838321\n",
      "  (765, 5)\t-0.9104179981822864\n",
      "  (765, 6)\t-0.6851933573713341\n",
      "  (765, 7)\t-0.27575965827118776\n",
      "  (766, 0)\t-0.8448850534430228\n",
      "  (766, 1)\t0.14279978683032835\n",
      "  (766, 2)\t-1.0246472679291287\n",
      "  (766, 3)\t-0.012301288426257741\n",
      "  (766, 4)\t-0.1815412428554134\n",
      "  (766, 5)\t-0.3427901904896165\n",
      "  (766, 6)\t-0.37110101492631137\n",
      "  (766, 7)\t1.1707321450187398\n",
      "  (767, 0)\t-0.8448850534430228\n",
      "  (767, 1)\t-0.9420676584418064\n",
      "  (767, 2)\t-0.19743282267571668\n",
      "  (767, 3)\t0.2153466516066541\n",
      "  (767, 4)\t-0.1815412428554134\n",
      "  (767, 5)\t-0.2991265129747962\n",
      "  (767, 6)\t-0.4737850499564149\n",
      "  (767, 7)\t-0.8713739302140991\n"
     ]
    }
   ],
   "source": [
    "#转化成稀疏矩阵加快训练速度\n",
    "from scipy.sparse import csr_matrix\n",
    "X_train=csr_matrix(X_train)\n",
    "print(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss is: [0.48797856 0.53011593 0.4562292  0.422546   0.48392885]\n",
      "cv logloss is: 0.47615970944434044\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import cross_val_score,GridSearchCV\n",
    "\n",
    "#采用5折交叉验证进行模拟\n",
    "lr=LogisticRegression(solver='liblinear')\n",
    "loss=cross_val_score(lr,X_train,y_train,cv=5,scoring='neg_log_loss')\n",
    "print('loss is:',-loss)\n",
    "print('cv logloss is:',-loss.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "penaltys=['l1','l2']\n",
    "Cs=[0.0001,0.001,0.01,0.1,1,10,100,1000,10000]\n",
    "parameters=dict(penalty=penaltys,C=Cs)\n",
    "#使用log损失调优模型\n",
    "lr_penalty=LogisticRegression(solver='liblinear')\n",
    "grid_log=GridSearchCV(lr_penalty,parameters,cv=5,scoring='neg_log_loss',return_train_score = True)\n",
    "grid_log.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4760267534728193\n",
      "{'C': 1, 'penalty': 'l1'}\n"
     ]
    }
   ],
   "source": [
    "#print(grid.cv_results_)\n",
    "print(-grid_log.best_score_)\n",
    "print(grid_log.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 756x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画图查看结果\n",
    "test_means_log=grid_log.cv_results_['mean_test_score']\n",
    "test_stds_log=grid_log.cv_results_['std_test_score']\n",
    "train_means_log=grid_log.cv_results_['mean_train_score']\n",
    "train_stds_log=grid_log.cv_results_['std_train_score']\n",
    "\n",
    "n_Cs=len(Cs)\n",
    "n_penaltys=len(penaltys)\n",
    "test_scores_log=np.array(test_means_log).reshape(n_Cs,n_penaltys)\n",
    "train_scores_log=np.array(train_means_log).reshape(n_Cs,n_penaltys)\n",
    "test_stds_log=np.array(test_stds_log).reshape(n_Cs,n_penaltys)\n",
    "train_stds_log=np.array(train_stds_log).reshape(n_Cs,n_penaltys)\n",
    "\n",
    "#yerr是误差线\n",
    "x_axis=np.log10(Cs)\n",
    "for i,v in enumerate(penaltys):\n",
    "    plt.errorbar(x_axis,-test_scores_log[:,i],yerr=test_stds_log[:,i],elinewidth=2,capsize=4,label=penaltys[i]+'Test')\n",
    "    plt.errorbar(x_axis,-train_scores_log[:,i],yerr=train_stds_log[:,i],elinewidth=2,capsize=4,label=penaltys[i]+'Train')\n",
    "    \n",
    "fig = plt.gcf()\n",
    "fig.set_size_inches(10.5, 10)\n",
    "plt.legend()\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('logloss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图给出了L1正则和L2正则下、不同正则参数C对应的模型在训练集上测试集上的logloss。可以看出在训练集上C越大（正则越少）的模型性能越好；\n",
    "我们需要的是在测试集上最好表现的模型，所以看绿色和蓝色的线，可以看到当C=1时(图中横坐标为0)性能最好,L1和L2差不多，然后误差也差不多，这边就选择用L1，因为L1的系数会简单很多，很多参数系数会是0\n",
    "虽然1后面都接近平稳，但是C越大的话，正则的比重就大，对模型的惩罚就大。接下来在0.1-10之前再进行测试看看结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[0.1, 0.5, 1, 3, 5, 7, 9], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=None, penalty='l1',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "Cs_CV=[0.1,0.5,1,3,5,7,9]\n",
    "lrcv_L1=LogisticRegressionCV(Cs=Cs_CV,cv=5,scoring='neg_log_loss',penalty='l1',solver='liblinear',multi_class='ovr')\n",
    "lrcv_L1.fit(X_train,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[-0.48922609, -0.48752566, -0.4881595 , -0.48877394, -0.48892199,\n",
       "         -0.48898957, -0.4890167 ],\n",
       "        [-0.52488491, -0.52744948, -0.52917102, -0.53052733, -0.5308143 ,\n",
       "         -0.53093461, -0.53100868],\n",
       "        [-0.45825127, -0.45542992, -0.45561397, -0.45580378, -0.45585185,\n",
       "         -0.45587258, -0.45588358],\n",
       "        [-0.43336454, -0.42301479, -0.4223736 , -0.42204975, -0.42199833,\n",
       "         -0.42197267, -0.42195971],\n",
       "        [-0.48687021, -0.48460566, -0.48452448, -0.48412478, -0.48411293,\n",
       "         -0.48411485, -0.48411284]])}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L1.scores_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如何求出平均分？如何求出最佳的C？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4764945669351656\n",
      "[0.5]\n"
     ]
    }
   ],
   "source": [
    "mse_mean=-np.mean(lrcv_L1.scores_[1])\n",
    "print(mse_mean)\n",
    "print(lrcv_L1.C_ )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "算出来的值0.476494686276和之前用GridSearchCV出来的值0.476026995491可以算的上是近似,但两者的C不一样\n",
    "GridSearchCV： 1/0.476026995491\n",
    "LogisticRegressionCV: 0.5/0.476494686276"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#n_Cs=len(Cs_CV)\n",
    "#n_classes=9\n",
    "#scores=np.zeros((n_classes,n_Cs))\n",
    "\n",
    "#for j in range(n_classes):\n",
    " #   scores[j][:]=np.mean(lrcv_L1.scores_[j+1])\n",
    "\n",
    "#mse_mean=-np.mean(scores,axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='accuracy', verbose=0)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#使用正确率调优模型\n",
    "grid_accuracy=GridSearchCV(lr_penalty,parameters,cv=5,scoring='accuracy',return_train_score = True)\n",
    "grid_accuracy.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.774739583333\n",
      "{'C': 0.1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "print(grid_accuracy.best_score_)\n",
    "print(grid_accuracy.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 756x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画图查看结果\n",
    "test_means_accuracy=grid_accuracy.cv_results_['mean_test_score']\n",
    "test_stds_accuracy=grid_accuracy.cv_results_['std_test_score']\n",
    "train_means_accuracy=grid_accuracy.cv_results_['mean_train_score']\n",
    "train_stds_accuracy=grid_accuracy.cv_results_['std_train_score']\n",
    "n_Cs=len(Cs)\n",
    "n_penaltys=len(penaltys)\n",
    "test_scores_accuracy=np.array(test_means_accuracy).reshape(n_Cs,n_penaltys)\n",
    "train_scores_accuracy=np.array(train_means_accuracy).reshape(n_Cs,n_penaltys)\n",
    "test_stds_accuracy=np.array(test_stds_accuracy).reshape(n_Cs,n_penaltys)\n",
    "train_stds_accuracy=np.array(train_stds_accuracy).reshape(n_Cs,n_penaltys)\n",
    "\n",
    "#x_axis=np.log10(Cs)\n",
    "x=axis=Cs\n",
    "for i,v in enumerate(penaltys):\n",
    "    plt.errorbar(x_axis,test_scores_accuracy[:,i],yerr=test_stds_accuracy[:,i],elinewidth=2,capsize=4,label=penaltys[i]+'Test')\n",
    "    plt.errorbar(x_axis,train_scores_accuracy[:,i],yerr=train_stds_accuracy[:,i],elinewidth=2,capsize=4,label=penaltys[i]+'Train')\n",
    "\n",
    "fig = plt.gcf()\n",
    "fig.set_size_inches(10.5, 10)\n",
    "plt.legend()\n",
    "plt.xlabel('C')\n",
    "plt.ylabel('scores_accuracy')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图给出了L1正则和L2正则下、不同正则参数C对应的模型在训练集上测试集上的accuracy。可以看出在训练集上C越大的模型性能越好；\n",
    "看测试集的结果（蓝色线和绿色线），当C>1时L1和L2表现差不多，最大的差别在于0到1这一段，这一段中绿色的曲线，也就是L2比L1的蓝色曲线更早进入稳定区。\n",
    "所以首先确定此次选择L2的模型，而参数则选择刚进入稳定点的那个值，大概靠近0的位置，计算结果是C=0.1的时候性能最好（L2正则）\n",
    "虽然1后面都接近平稳，但是C越大的话，正则的比重就大，对模型的惩罚就大。接下来在0-1之前再进行测试看看结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[0.05, 0.08, 0.1, 0.4, 0.7, 1, 1.2],\n",
       "           class_weight=None, cv=5, dual=False, fit_intercept=True,\n",
       "           intercept_scaling=1.0, max_iter=100, multi_class='ovr',\n",
       "           n_jobs=None, penalty='l2', random_state=None, refit=True,\n",
       "           scoring='accuracy', solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Cs_CV=[0.05,0.08,0.1,0.4,0.7,1,1.2]\n",
    "lrcv_L2=LogisticRegressionCV(Cs=Cs_CV,cv=5,scoring='accuracy',penalty='l2',solver='liblinear',multi_class='ovr')\n",
    "lrcv_L2.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[0.76623377, 0.76623377, 0.76623377, 0.75974026, 0.75974026,\n",
       "         0.75974026, 0.75974026],\n",
       "        [0.74025974, 0.74675325, 0.74675325, 0.74025974, 0.73376623,\n",
       "         0.74025974, 0.74025974],\n",
       "        [0.79220779, 0.79220779, 0.79220779, 0.78571429, 0.78571429,\n",
       "         0.78571429, 0.78571429],\n",
       "        [0.79084967, 0.79738562, 0.79738562, 0.79084967, 0.79738562,\n",
       "         0.79738562, 0.79738562],\n",
       "        [0.77124183, 0.77124183, 0.77124183, 0.76470588, 0.77124183,\n",
       "         0.77124183, 0.77124183]])}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L2.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7716068245480011\n",
      "[0.08]\n"
     ]
    }
   ],
   "source": [
    "mse_mean2=np.mean(lrcv_L2.scores_[1])\n",
    "print(mse_mean2)\n",
    "print(lrcv_L2.C_ )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "算出来的值0.771606824548和之前用GridSearchCV出来的值0.774739583333可以算的上是近似,但两者的C不一样\n",
    "GridSearchCV： 0.1/0.774739583333\n",
    "LogisticRegressionCV: 0.08/0.771606824548"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "综上，根据不同的标准训练出的模型是不一样的，实际情况需要根据需求来定制化特定的模拟器或者根据各个指标的权重来训练合适的模拟器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
